A computer is known to include a central processing unit, system memory, video graphic circuitry, audio processing circuitry, and peripheral ports. The peripheral ports allow the computer to interface with peripheral devices such as printers, monitors, external tape drives, the Internet, etc. In such a computer, the central processing unit functions as a host processor while the video graphics circuit functions as a loosely coupled co-processor. In general, the host processor executes applications and, during execution, calls upon the co-processor to execute its particular function. For example, if the central processing unit requires a drawing operation to be done, it requests the video graphics co-processor to perform the drawing function. The request may be a command provided to the video graphics co-processor through a command delivery system.
In many computer systems that include advance video graphics circuitry, the video graphics circuitry includes a double buffering system. The double buffering system includes memory that is divided into two sections (i.e., a front buffer and a back buffer) and interfacing circuitry such that the appropriate buffer is read from and/or written to. In practice, the front buffer stores fully rendered images and is operably coupled to a display driver. The display driver, which drives a display, such as a CRT monitor, television, LCD panel, etc., retrieves the fully rendered images from the front buffer and provides them to the display. While the front buffer is supplying rendered images to the display, the back buffer is used to store images that are in the process of being rendered by the video graphics circuitry. Once the video graphics circuitry has completed the rendered of the current images and the fully rendered images in the front buffer have been provided to the display, the front and back buffers are flipped. As such, the previous front buffer now becomes the back buffer and is used to store new images as they are rendered, while the back buffer is provided the rendered images it stores to the display driver. The front and back buffers continually flip in this manner, which occurs during the blanking interval of the video data such that tearing (i.e., a visible separation of images) does not occur. Typically, the buffers flip at the refresh rate of the display (e.g., 50 Hz, 60 Hz, 75 Hz, and 90 Hz), which is in synchronization with the video graphics circuitry rendering a new frame of data (i.e., images).
As is generally known, the rendering process includes a software portion, which is performed by the host processor, and a hardware portion, which is performed by the video graphics circuit. In general, the software portion generates graphics data (e.g., physical coordinates, texture coordinates, alpha-blending parameters, etc. of images to be rendered) and provides the graphics data to the video graphics circuitry. This software processing is often referred to as video graphics software overhead. As the video graphics circuitry receives the graphics data, it processes the data to render the images. During the graphics data generation process and the rendering process, the software and hardware inter-react to determine when the back and front buffers should be flipped. The software handles a majority of the determination process by polling the video graphics circuit to determine when it has completed its current rendering operation. When the video graphics circuit has completed its current rendering operation and the video data is in the vertical blanking section, the page flip occurs.
As the complexity and intricacy of images being displayed increase, the video graphics circuitry may not be able to completely render a new frame of data (e.g., images) during a refresh cycle (i.e., the inverse of the refresh rate of the display). As such, the video graphics circuitry requires two or more refresh cycles to render the current frame of data. When this occurs, the software portion is stalled in a polling operation, waiting for the video graphic circuitry to complete it current operation. As such, flipping of the buffers (often referred to as page flipping) does not occur such that the providing of new images to the display is occurring at a fraction of the refresh rate, which may cause adverse visual effects. In this situation, up to twenty-five percent (25%) of the CPU's processing time may be consumed by polling the video graphic circuit. As such, the central processing unit is consuming valuable processing resources to poll the video graphics circuitry and the resulting video quality may be less than desirable.
Therefore, a need exists for a method and apparatus that improves page flipping for double buffered systems that substantially reduces the need for polling by the central processing unit and substantially reduces the potential for reduced video quality.